package RRHH_MODELO;

import Conexion.Conexion;
import java.io.InputStream;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class RHH_PERSONA_DATOS {

    private int ID_PERSONA;
    private int ID_DATOS;
    private String DATO;  
    private Date CADUCIDAD;
    private Conexion con = null;

    public RHH_PERSONA_DATOS(Conexion con) {
        this.con = con;
    }

    public RHH_PERSONA_DATOS(String DATO, int ID_DATOS, int ID_PERSONA, Date CADUCIDAD) {
        this.DATO = DATO;
        this.ID_DATOS = ID_DATOS;
        this.ID_PERSONA = ID_PERSONA;
        this.CADUCIDAD = CADUCIDAD;
    }

    public boolean Insertar() throws SQLException {        
        String sql = "INSERT INTO BROKER.RHH_PERSONA_DATOS (ID_PERSONA, ID_DATOS, DATO, CADUCIDAD) VALUES ("+ID_PERSONA+", "+ID_DATOS+", '"+DATO+"', null)";
        con.EjecutarSentencia(sql);
        return true;
    }

    public boolean Eliminar() throws SQLException {
        String consulta = "delete from BROKER.RHH_PERSONA_DATOS where ID_PERSONA = " + ID_PERSONA + " and ID_DATOS = " + getID_DATOS();
        con.EjecutarSentencia(consulta);
        return true;
    }
    public boolean Eliminar(int idpersona) throws SQLException {
        String consulta = "delete from BROKER.RHH_PERSONA_DATOS where ID_PERSONA = " + idpersona;
        con.EjecutarSentencia(consulta);
        return true;
    }

    public RHH_PERSONA_DATOS BuscarXid(int id_persona, int iddato) throws SQLException {
        String consulta = "select * from BROKER.RHH_PERSONA_DATOS where ID_PERSONA = " + id_persona + " and ID_DATOS = " + iddato;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PERSONA_DATOS> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }

    public List<RHH_PERSONA_DATOS> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_PERSONA_DATOS";
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);
    }

    public List<RHH_PERSONA_DATOS> TodosXPERSONA(int id_persona, int idcategoria) throws SQLException {
        String consulta = "SELECT pd.*\n" +
                            "FROM BROKER.RHH_PERSONA,\n" +
                            "BROKER.RHH_PERSONA_DATOS pd,\n" +
                            "BROKER.RHH_DATOS,\n" +
                            "BROKER.RHH_CATEGORIA_DATO\n" +
                            "WHERE(pd.ID_PERSONA = RHH_PERSONA.ID)\n" +
                            "AND (pd.ID_DATOS = RHH_DATOS.ID)\n" +
                            "AND (RHH_DATOS.ID_CATEGORIA_DATO = RHH_CATEGORIA_DATO.ID)\n" +
                            "AND (RHH_PERSONA.ID = "+id_persona+")\n" +
                            "AND (RHH_CATEGORIA_DATO.ID = "+idcategoria+")";
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);
    }        

    public boolean Actualizar() throws SQLException {
        String consulta = "update BROKER.RHH_PERSONA_DATOS set DATO = '" + getDATO() + "' where ID_PERSONA = " + getID_PERSONA() + " and ID_DATOS = " + getID_DATOS();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public List<RHH_PERSONA_DATOS> Cargar(ResultSet rs) throws SQLException {
        List<RHH_PERSONA_DATOS> lista = new ArrayList<RHH_PERSONA_DATOS>();
        while (rs.next()) {
            RHH_PERSONA_DATOS objeto = new RHH_PERSONA_DATOS(con);

            objeto.setID_PERSONA(rs.getInt("ID_PERSONA"));
            objeto.setID_DATOS(rs.getInt("ID_DATOS"));
            objeto.setDATO(rs.getString("DATO"));
            objeto.setCADUCIDAD(rs.getDate("CADUCIDAD"));
            objeto.setCon(con);
            lista.add(objeto);
        }
        return lista;
    }

    public int getID_PERSONA() {
        return ID_PERSONA;
    }

    public void setID_PERSONA(int ID_PERSONA) {
        this.ID_PERSONA = ID_PERSONA;
    }

    public int getID_DATOS() {
        return ID_DATOS;
    }

    public void setID_DATOS(int ID_DATOS) {
        this.ID_DATOS = ID_DATOS;
    }

    public String getDATO() {
        if (DATO == null) {
            DATO = "";
        }
        return DATO;
    }

    public void setDATO(String DATO) {
        this.DATO = DATO;
    }

    public Conexion getCon() {
        return con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }

    public String getCADUCIDAD() {
        SimpleDateFormat formtao = new SimpleDateFormat("dd/MM/YYYY");
        return formtao.format(CADUCIDAD);
    }

    public void setCADUCIDAD(Date CADUCIDAD) {
        this.CADUCIDAD = CADUCIDAD;
    }
}
